﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;

namespace NMF.Languages
{
    public interface IClass : IType
    {
        IEnumerable<IProperty> GetProperties();

        IEnumerable<IClass> GetBaseTypes();

        ITypeSystem TypeSystem { get; }

        void AssertIsAssignableFrom(IClass baseClass);

        IProperty GetProperty(string name);

        object CreateInstance();

        event EventHandler InstanceCreated;
    }
}
